package cn.stylefeng.guns.modular.service;

import cn.stylefeng.guns.modular.dto.FuzzySearchSframeDto;
import cn.stylefeng.guns.modular.entity.ScheduleFrame;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

public interface ScheduleFrameService {

    /**
     * 查询该用户的所有日程框架
     * @return
     */
    public List<ScheduleFrame> selectAllScheduleFrame(long userId);

    /**
     * 根据该用户的框架id查询框架信息
     */
    public ScheduleFrame selectScheduleFrameById( int ScheduleFrameId);

    /**
     * 保存框架信息
     * @param scheduleFrame
     * @return
     */
    public int saveScheduleFrame(ScheduleFrame scheduleFrame);

    /**
     * 根据该用户的框架表名字查询
     * @param ScheduleFrameByName
     * @return
     */
    public ScheduleFrame selectScheduleFrameByName(String ScheduleFrameByName, long userId);

    /**
     * 查看所有已发布的日程框架
     * @return
     */
    public List<ScheduleFrame> selectAllScheduleFramePublish();

    /**
     * 根据条件进行模糊查询日程框架
     * @param fuzzySearchSframeDto
     * @return
     */
    public Page<Map<String, Object>> fuzzySearchSframe(FuzzySearchSframeDto fuzzySearchSframeDto,long userId);

    /**
     * 设置选中的框架为框架草稿
     * @param frameDraft
     * @param sframeId
     * @return
     */
    public  int setSframeDraft(@Param("frameDraft") String frameDraft,@Param("sframeId") int sframeId);

    /**
     * 修改框架内容
     * @return
     */
    public int updateScheduleFrame(ScheduleFrame scheduleFrame);

    /**
     * 修改框架状态ENABLE :已发布 LOCKED :取消发布
     * @param publish 是否发布
     * @param frameId 框架id
     * @return
     */
    public int setPublish(String publish,int frameId);

/*    *//**
     * 修改框架共享状态 ENABLE :已共享 LOCKED :取消共享
     * @param share
     * @param frameId
     * @return
     *//*
    public int setisShare(String share,int frameId);*/

    /**
     * 根据框架id删除框架
     * @param sframeId
     * @return
     */
    public int deleteScheduleFrameById(int sframeId);

    /**
     * 首页显示当前用户最新的两个日程框架
     * @return
     */
    public List<ScheduleFrame> showScheduleFrameLimitTwo(long userId);


    /**
     * 显示该用户的所有草稿框架
     * @param userId
     * @return
     */
    public List<ScheduleFrame> showAllSframeDraft(@Param("userId")long userId);


    /**
     * 模糊查询草稿日程框架
     * @param keyword
     * @param creatTime
     * @return
     */
    public Page<Map<String, Object>> fuzzyShowDraftSframe( @Param("keyword") String keyword,@Param("creatTime") String creatTime);
}
